public class bubbleSort {
    /**
     * 冒泡排序
     * 外层循环 定个位置
     * 内层循环 只要 i大于i+1位置的数  就换
     * 如果第一个数最大就要不断的换 依次换到末尾
     *
     * 重点   换的目标是按idx走   遍历idx   挨个换
     * 关注的是 idx++
     *
     * @param arr
     */
    public static void bubbleSort(int[] arr){
        if (arr==null || arr.length<2){
            return;
        }
        for (int i = arr.length-1; i > 0 ; i--) {
//            int k =-1;
            for (int j = 0; j < i; j++) {
                if ( arr[j]>arr[j+1]) {
                    sortUtil.swap2(arr, j, j + 1);
//                    k = j;
                }
            }
//            for (int j = 0; j < arr.length; j++) {
//                System.out.print(arr[j]);
//            }
//            System.out.println("  minIdx -->"+k);

//            int[]arr = new int[]{2,1,4,7,5,3,9,6,8};
//            124537689  minIdx -->7    21换  75换  73换  96换 98换
//            124356789  minIdx -->5    53换  76换
//            123456789  minIdx -->2    43换
//            123456789  minIdx -->-1
//            123456789  minIdx -->-1
//            123456789  minIdx -->-1
//            123456789  minIdx -->-1
//            123456789  minIdx -->-1
        }
    }
    public static void main(String[] args) {
        int testTime = 500000;
        int maxSize = 100;
        int maxValue = 100;
        boolean succeed = true;
        for (int i = 0; i < testTime; i++) {
            int[] arr1 = sortUtil.generateRandomArray(maxSize, maxValue);
            int[] arr2 = sortUtil.copyArray(arr1);
            bubbleSort(arr1);
            sortUtil.comparator(arr2);
            //不统一的时候打印两个数组
            if (!sortUtil.isEqual(arr1, arr2)) {
                succeed = false;
                sortUtil.printArray(arr1);
                sortUtil.printArray(arr2);
                break;
            }
        }
        System.out.println(succeed ? "Nice!" : "Fucking fucked!");
        int[] arr = sortUtil.generateRandomArray(maxSize, maxValue);
        //初始化的随机数据
        sortUtil.printArray(arr);
        bubbleSort(arr);
        //排序后的数据
        sortUtil.printArray(arr);
    }
}
